モデル同士の紐づけ
class CreateEmployees < ActiveRecord::Migration[7.1] def change create_table :employees do |t| t.text :name, null: false t.integer :age t.text :post, null: false t.text :address, null: false t.text :phone, null: false t.references :company, null: false, foreign_key: true t.timestamps end end end
class Employee < ApplicationRecord belongs_to :company validates :name, presence: true validates :post, presence: true validates :address, presence: true validates :phone, presence: true end
class Company < ApplicationRecord has_many :employee validates :name, presence: true end
上の例は、employeeが多、companyが1の関係でリレーションを設定している例です。
db/migrate/にできたファイルには多側のモデルに(リレーションのフィールドを持っている側の1対1時も)
の形式で記入し、app/models/多側のモデルには
の形式で記入し、app/models/1側のモデルには
の形式で記入してください。
has_many: 多側のモデルsの部分は複数となるためsがつく点に注意してください。
また、1対1の紐づき時には
と記入してください。
db/migrate/にできたファイルには多側のモデルに(リレーションのフィールドを持っている側の1対1時も)
t.references :1側の紐づくモデル, foreign_key: true
の形式で記入し、app/models/多側のモデルには
belongs_to :1側のモデル
の形式で記入し、app/models/1側のモデルには
has_many: 多側のモデルs
の形式で記入してください。
has_many: 多側のモデルsの部分は複数となるためsがつく点に注意してください。
また、1対1の紐づき時には
has_one: モデル
と記入してください。